package map;

import java.util.HashMap;

/*
  java.util.Map 查找表
  Map体现的结构是一个多行两列的表格，其中左列称为key，右列称为value
  Map总是根据key获取对应的value
  Map中的key不允许重复(equals判定)

  Map是一个接口，常用的实现类:
  java.util.HashMap:散列表，哈希表
  散列表是当今查询速度最快的数据结构，被大量应用于缓存服务器中
 */
public class MapDemo1 {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        //如果map的value是包装类，获取value时要用包装类，避免因为自动拆箱导致空指针异常
        Integer value = map.put("语文:", 110);
        System.out.println(value);
        map.put("数学:",148);
        map.put("英语:",150);
        map.put("物理:",35);
        map.put("化学:",36);
        Integer value1 = map.put("语文:", 88);
        System.out.println(map);
        System.out.println(value1);


        /*
          V get(Object key)
          根据给定的key获取对应的value，如果给定的key在Map中不存在，则返回值为null
         */
        value = map.get("数学:");
        System.out.println(value);
        value = map.get("体育:");
        System.out.println(value);


        /*
          V remove(Object key)
          根据Key删除对应的键值对，返回值为这个key对应的value
         */
        value = map.remove("英语:");
        System.out.println(value);

        int size = map.size();//获取map中的元素个数(一组键值对算一个元素)
        System.out.println(size);

        boolean ck = map.containsKey("英语:");
        boolean cv = map.containsValue(148);
        System.out.println("包含key:"+ck);
        System.out.println("包含value:"+cv);

        map.clear();
        System.out.println(map);
    }
}
